package com.example.joblinker.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.joblinker.dto.JobFavoriteDTO;
import com.example.joblinker.dto.ResumeViewDTO;
import com.example.joblinker.dto.UserTodoDTO;

import java.util.List;
import java.util.Map;

/**
 * 个人中心服务接口
 */
public interface PersonalService {

    /**
     * 获取用户统计数据
     *
     * @param userId 用户ID
     * @return 统计数据
     */
    Map<String, Integer> getUserStats(Long userId);

    /**
     * 获取用户待办事项
     *
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 待办事项列表
     */
    List<UserTodoDTO> getUserTodos(Long userId, Integer limit);

    /**
     * 获取推荐职位
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 推荐职位列表
     */
    Page<Map<String, Object>> getRecommendJobs(Long userId, Integer page, Integer size);

    /**
     * 获取用户收藏的职位列表
     *
     * @param userId 用户ID
     * @param keyword 搜索关键词
     * @param page 页码
     * @param size 每页大小
     * @return 收藏职位列表
     */
    Page<JobFavoriteDTO> getFavoriteJobs(Long userId, String keyword, Integer page, Integer size);

    /**
     * 添加职位收藏
     *
     * @param userId 用户ID
     * @param jobId 职位ID
     * @return 添加结果
     */
    boolean addFavoriteJob(Long userId, Long jobId);

    /**
     * 取消职位收藏
     *
     * @param userId 用户ID
     * @param jobId 职位ID
     * @return 取消结果
     */
    boolean removeFavoriteJob(Long userId, Long jobId);

    /**
     * 获取用户简历被查看记录
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 简历查看记录列表
     */
    Page<ResumeViewDTO> getResumeViews(Long userId, Integer page, Integer size);
} 